package com.jyw.business.knowledge.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.jyw.business.knowledge.domain.KlKnowledge;
import com.jyw.business.knowledge.domain.dto.*;
import com.jyw.business.knowledge.domain.vo.KlKnowledgeVo;

import java.util.List;

/**
 * 知识库-信息Service接口
 *
 * @author ruoyi
 * @date 2023-11-17
 */
public interface IKlKnowledgeService extends IService<KlKnowledge> {

    /**
     * 查询知识库申请知识列表
     *
     * @param pageDto
     * @return
     */
    List<KlKnowledgeVo> getApplyList(KlKnowledgePageDto pageDto);

    /**
     * 查询知识库知识审核通过列表
     *
     * @param pageDto
     * @return
     */
    List<KlKnowledgeVo> getPassList(KlKnowledgePageDto pageDto);

    /**
     * 标题和助记简拼查询知识库列表
     *
     * @param keyword
     * @return
     */
    List<KlKnowledgeVo> getListByKeyword(String keyword);

    /**
     * 查询知识库申请详细信息
     *
     * @param id
     * @return
     */
    KlKnowledgeVo getInfoById(Long id);

    /**
     * 新增知识库申请
     *
     * @param addDto
     * @param createUser
     */
    void add(KlKnowledgeAddDto addDto, Long createUser);

    /**
     * 修改知识库申请
     *
     * @param editDto
     * @param userId
     */
    void edit(KlKnowledgeEditDto editDto, Long userId);

    /**
     * 修改知识库 已通过
     *
     * @param editDto
     * @param userId
     */
    void editPass(KlKnowledgeEditPassDto editDto, Long userId);

    /**
     * 修改状态
     *
     * @param stateDto
     */
    void editState(KlKnowledgeStateDto stateDto);

    /**
     * 驳回知识库申请
     *
     * @param passDto
     * @param userId
     */
    void pass(KlKnowledgePassDto passDto, Long userId);

    /**
     * 驳回知识库申请
     *
     * @param editDto
     * @param userId
     */
    void reject(KlKnowledgeRejectDto editDto, Long userId);

    /**
     * 批量删除知识库-信息
     *
     * @param ids 需要删除的知识库-信息主键集合
     * @return 结果
     */
    int deleteKlKnowledgeByIds(Long[] ids);

}
